/**
 * 封装本地存储操作模块
 */

/**
 * 存储数据到localStorage
 */
export const setItem = (key, value) => {
  // 将数组、对象类型的数据转为 JSON 字符串再进行存储
  if (typeof value === "object") {
    value = JSON.stringify(value);
  }
  window.localStorage.setItem(key, value);
};

/**
 * 从localStorage获取数据
 */
export const getItem = (key) => {
  const item = window.localStorage.getItem(key);
  // 由于很难判断一个字符串是否是JSON字符串，所以直接try catch起来，没有报错则为JSON字符串
  // 转换后进行返回，如果报错了说明不是JSON字符串，直接返回
  try {
    return JSON.parse(item);
  } catch (err) {
    return item;
  }
};

/**
 * 从localStorage中删除数据
 */
export const removeItem = (key) => {
  window.localStorage.removeItem(key);
};

/**
 * 存储数据数据到sessionStorage
 */
export const setItemFromSession = (key, value) => {
  if (typeof value === "object") {
    value = JSON.stringify(value);
  }
  window.sessionStorage.setItem(key, value);
};

/**
 * 从sessionStorage获取数据
 */
export const getItemFromSession = (key) => {
  const item = window.sessionStorage.getItem(key);
  // 由于很难判断一个字符串是否是JSON字符串，所以直接try catch起来，没有报错则为JSON字符串
  // 转换后进行返回，如果报错了说明不是JSON字符串，直接返回
  try {
    return JSON.parse(item);
  } catch (err) {
    return item;
  }
};

/**
 * 从sessionStorage中删除数据
 */
export const removeItemFromSession = (key) => {
  window.sessionStorage.removeItem(key);
};
